SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TASALD_EMPR_Q31]                          
/*-------------------------------------------------------------------*/                              
/*----- Empresa           : OFISIS S.A.                          ----*/                              
/*----- Cliente           : OFISIS S.A.                          ----*/                              
/*----- Sistema           : Contabilidad                         ----*/                              
/*----- Modulo            : Empresa                              ----*/                              
/*----- Programa          : Libro Inventarios y Balances - Personal ----*/                              
/*----- Nombre            : SP_TASALD_EMPR_Q31                   ----*/                              
/*----- Script            : TASALD_EMPR                          ----*/                              
/*----- Desarrollado por  : Martin Garcia Farfan                 ----*/                              
/*----- Fecha             : 13/09/2008                           ----*/                              
/*----- Base de Datos     : MS SQL Server                        ----*/                              
/*----- Version BD        : 2005                                 ----*/                              
/*-------------------------------------------------------------------*/                              
/*-------------------------------------------------------------------*/                              
/*----- Modificado 1 por  :                                      ----*/                              
/*----- Fecha Modifica    :                                      ----*/                              
/*----- Detalle Modifica  :                                      ----*/                              
/*-------------------------------------------------------------------*/                              
/*-------------------------------------------------------------------*/                               
/*----- Drop proc SP_TASALD_EMPR_Q31                             ----*/                              
/*----- Grant all on SP_TASALD_EMPR_Q31 to PUBLIC                ----*/                              
/*----- Execute SP_TASALD_EMPR_Q31 '01', 1, NULL, 2008, 8, 'R','G'  ----*/                 
/*-------------------------------------------------------------------*/                              
@ISCO_EMPR       TD_VC_002,                              
@INNU_CNTB_EMPR  TD_IN_001,                       
@ISCO_UNID_CNTB  TD_VC_003,                                       
@INNU_ANNO       TD_IN_004_ANNO,                              
@INNU_MESE       TD_IN_002_MESE,        
@ISTI_REPO       TD_VC_001,                              
@ISTI_INFO       TD_VC_001,  
@ISCA_WHER       TD_VC_255 

As                
-- Declaro Tabla Temporal                              
Create Table #TWSALD_EMPR_Q26_1                              
(NU_QUIE_0001     Int           NULL,                              
 NU_QUIE_0002     Int           NULL,                              
 DE_QUIE_0002     Varchar(50)   NULL,                              
 CO_CNTA_QUIE     Varchar(20)   NULL,                              
 DE_CNTA_QUIE     Varchar(50)   NULL,                              
 CO_CNTA_EMPR     Varchar(20)   NULL,                              
 DE_CNTA_EMPR     Varchar(50)   NULL,               
 NU_DOCU_SUNA     Varchar(20)   NULL,              
 TI_AUXI_EMPR     Varchar(1)    NULL,              
 CO_AUXI_EMPR     Varchar(20)   NULL,              
 NO_AUXI          Varchar(100)  NULL,              
 TI_DOCU          Varchar(3)    NULL,            
 NU_DOCU          Varchar(100)  NULL,                
 TI_DOID_SUNA     Varchar(3)    NULL,            
 NU_RUCS          Varchar(20)    NULL,                  
 FE_ASTO_CNTB     DATETIME NULL,               
 IM_MVTO_TOTA     Numeric(16,4) NULL)                              
                       
-- Declaro Variables de Trabajo                              
Declare            
@CSCO_CNTA_QUIE     TD_VC_020,                              
@CSCO_CNTA_EMPR   TD_VC_020,                              
@CSDE_CNTA_EMPR     TD_VC_050,                              
@CNIM_MVTO_SALD     TD_NU_016_004,              @VNNU_QUIE_MINI     TD_IN_001,                          
@VNNU_QUIE_MAXI     TD_IN_001,                              
@VNIM_MVTO_ACTI     TD_NU_016_004,                          
@VNIM_MVTO_PASI     TD_NU_016_004,                              
@VNIM_MVTO_PATR     TD_NU_016_004,                            
@VSCA_WHER_LOCA  TD_VC_255,                          
@VNIM_CNTA_ORDE     TD_NU_016_004,              
@CSNU_DOCU_SUNA     TD_VC_020,              
@CSTI_AUXI_EMPR     TD_VC_001,              
@CSCO_AUXI_EMPR     TD_VC_020,              
@CSNO_AUXI          TD_VC_100,            
@CSTI_DOCU          TD_VC_003,            
@CSNU_DOCU          TD_VC_100,               
@CSTI_DOID_SUNA     TD_VC_003,              
@CSNU_RUCS          TD_VC_020,              
@CDFE_ASTO_CNTB     DATETIME              
                        
                              
-- Inicializo Variables                 
Select @CSCO_CNTA_QUIE = NULL                              
Select @CSCO_CNTA_EMPR = NULL                              
Select @CSDE_CNTA_EMPR = NULL                              
Select @CNIM_MVTO_SALD = NULL                              
Select @VNNU_QUIE_MAXI = 0                              
Select @VNNU_QUIE_MAXI = 0                              
Select @VNIM_MVTO_ACTI = 0                              
Select @VNIM_MVTO_PASI = 0                              
Select @VNIM_MVTO_PATR = 0                              
Select @VNIM_CNTA_ORDE = 0                              
                              
-- Para obtener el mayor y el menor nivel de quiebre de la tabla de Parametros                              
Select @VNNU_QUIE_MAXI = NV_INFO_CNTA,                              
       @VNNU_QUIE_MINI = Convert(Integer, Substring(NV_QUIE_CNTA, 1, 2))                              
   from TMPARA_CONT                              
  Where CO_EMPR = @ISCO_EMPR                              
                      
If @ISTI_INFO = 'U'                               
  Select @VSCA_WHER_LOCA = ' And TXMVTO_CNTB.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '                                
Else                               
  Select @VSCA_WHER_LOCA = ''                          
                                 
-- Declaro Cursor                              
  Exec(' Declare CU_TASALD_EMPR_Q31_1 Cursor                              
  For                             
  Select Substring(TXMVTO_CNTB.CO_CNTA_EMPR, 1, 2),TXMVTO_CNTB.CO_CNTA_EMPR, TMPLAN_EMPR.DE_CNTA_EMPR,                            
  MAX(TMAUXI_EMPR.NU_DOCU_SUNA), MAX(TMAUXI_EMPR.NO_AUXI), TXMVTO_CNTB.TI_DOCU,TXMVTO_CNTB.NU_DOCU,              
  MAX(TMAUXI_EMPR.CO_DOCU_SUNA),MAX(TMAUXI_EMPR.NU_RUCS), MIN(TXMVTO_CNTB.FE_DOCU),            
  SUM(CASE WHEN TI_OPER = "CAR" THEN TXMVTO_CNTB.IM_MVTO_CNTB ELSE 0 END)   
  - SUM(CASE WHEN TI_OPER = "ABO" THEN TXMVTO_CNTB.IM_MVTO_CNTB ELSE 0 END), TXMVTO_CNTB.TI_AUXI_EMPR, TXMVTO_CNTB.CO_AUXI_EMPR  
   From  TXMVTO_CNTB, TMPLAN_EMPR, TMAUXI_EMPR   
   Where TXMVTO_CNTB.CO_EMPR = "' + @ISCO_EMPR + '"  
     and TXMVTO_CNTB.NU_CNTB_EMPR = ' + @INNU_CNTB_EMPR + '  
     and TXMVTO_CNTB.NU_ANNO = ' + @INNU_ANNO + '  
     and TXMVTO_CNTB.NU_MESE <= ' + @INNU_MESE +   
     @VSCA_WHER_LOCA + @ISCA_WHER + '
     and Datalength(TXMVTO_CNTB.CO_CNTA_EMPR) = ' + @VNNU_QUIE_MAXI + '  
     and Substring(TXMVTO_CNTB.CO_CNTA_EMPR, 1, 2) < "60"  
     and TXMVTO_CNTB.TI_AUXI_EMPR IS NOT NULL  
     and TXMVTO_CNTB.CO_AUXI_EMPR IS NOT NULL  
     and TXMVTO_CNTB.CO_ORDE_SERV IS NULL  
     and TXMVTO_CNTB.CO_EMPR = TMPLAN_EMPR.CO_EMPR  
     and TXMVTO_CNTB.CO_CNTA_EMPR = TMPLAN_EMPR.CO_CNTA_EMPR  
     and TXMVTO_CNTB.SI_MVTO_CNTB IN ("APR")  
     and TMPLAN_EMPR.NU_ANNO = 9999  
     and TMPLAN_EMPR.CO_CNTA_EMPR IN (SELECT CO_CNTA_EMPR FROM  
     TTCNTA_PERS WHERE CO_EMPR="' + @ISCO_EMPR + '" )  
     and TMAUXI_EMPR.CO_EMPR=TXMVTO_CNTB.CO_EMPR  
     and TMAUXI_EMPR.TI_AUXI_EMPR=TXMVTO_CNTB.TI_AUXI_EMPR  
     and TMAUXI_EMPR.CO_AUXI_EMPR=TXMVTO_CNTB.CO_AUXI_EMPR  
   Group by Substring(TXMVTO_CNTB.CO_CNTA_EMPR, 1, 2), TXMVTO_CNTB.CO_CNTA_EMPR ,TMPLAN_EMPR.DE_CNTA_EMPR,  
   TXMVTO_CNTB.TI_AUXI_EMPR, TXMVTO_CNTB.CO_AUXI_EMPR, TXMVTO_CNTB.TI_DOCU,TXMVTO_CNTB.NU_DOCU')  
  
Open CU_TASALD_EMPR_Q31_1  
Fetch CU_TASALD_EMPR_Q31_1 into @CSCO_CNTA_QUIE, @CSCO_CNTA_EMPR,  
       @CSDE_CNTA_EMPR, @CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,  
       @CSNU_RUCS,@CDFE_ASTO_CNTB,@CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR  
                              
While @@Fetch_status = 0                              
 Begin                              
                        
  If SubString(@CSCO_CNTA_QUIE, 1, 1) = '0'                        
   Begin                         
    Insert into #TWSALD_EMPR_Q26_1                              
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                               
     CO_CNTA_EMPR, DE_CNTA_EMPR, NU_DOCU_SUNA ,NO_AUXI,TI_DOCU,NU_DOCU,TI_DOID_SUNA,              
     NU_RUCS,FE_ASTO_CNTB,IM_MVTO_TOTA, TI_AUXI_EMPR, CO_AUXI_EMPR)                              
    Values(0, 1, Null, @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                               
       @CSDE_CNTA_EMPR,@CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,              
       @CSNU_RUCS,@CDFE_ASTO_CNTB, @CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR)                              
                              
    -- Acumulo el total para los Activos                              
    Select @VNIM_CNTA_ORDE = @VNIM_CNTA_ORDE + @CNIM_MVTO_SALD                    
   End                              
                              
  -- Inserto los Activos como quiebre 1                                 
  If SubString(@CSCO_CNTA_QUIE, 1, 1) > '0' And @CSCO_CNTA_QUIE < '40'                            
   Begin                              
    Insert into #TWSALD_EMPR_Q26_1                              
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                               
     CO_CNTA_EMPR, DE_CNTA_EMPR, NU_DOCU_SUNA,NO_AUXI,TI_DOCU,NU_DOCU,TI_DOID_SUNA,              
     NU_RUCS,FE_ASTO_CNTB, IM_MVTO_TOTA, TI_AUXI_EMPR, CO_AUXI_EMPR)                              
    Values(1, 1, 'ACTIVO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                               
       @CSDE_CNTA_EMPR, @CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,              
       @CSNU_RUCS,@CDFE_ASTO_CNTB,@CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR)                              
                              
    -- Acumulo el total para los Activos                              
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @CNIM_MVTO_SALD                              
   End                              
                              
  -- Inserto los Pasivos como quiebre 2                              
  If @CSCO_CNTA_QUIE > '39' and @CSCO_CNTA_QUIE < '50'                              
   Begin                              
    Insert into #TWSALD_EMPR_Q26_1                              
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                               
     CO_CNTA_EMPR, DE_CNTA_EMPR, NU_DOCU_SUNA ,NO_AUXI,TI_DOCU,NU_DOCU,TI_DOID_SUNA,              
     NU_RUCS,FE_ASTO_CNTB,IM_MVTO_TOTA, TI_AUXI_EMPR, CO_AUXI_EMPR)                              
    Values(2, 1, 'PASIVO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                               
 @CSDE_CNTA_EMPR,@CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,              
         @CSNU_RUCS,@CDFE_ASTO_CNTB, @CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR)  
                              
   -- Acumulo el total para los Pasivos                              
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @CNIM_MVTO_SALD                            
   End                              
          
  -- Inserto el Patrimonio como quiebre 3                              
  If @CSCO_CNTA_QUIE > '49'                               
   Begin                              
    Insert into #TWSALD_EMPR_Q26_1                              
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                               
     CO_CNTA_EMPR, DE_CNTA_EMPR, NU_DOCU_SUNA ,NO_AUXI,TI_DOCU,NU_DOCU,TI_DOID_SUNA,              
     NU_RUCS,FE_ASTO_CNTB,IM_MVTO_TOTA, TI_AUXI_EMPR, CO_AUXI_EMPR)  
    Values(3, 1, 'PATRIMONIO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                               
        @CSDE_CNTA_EMPR, @CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,              
        @CSNU_RUCS,@CDFE_ASTO_CNTB,@CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR)  
                              
   -- Acumulo el total para el Patrimonio                              
    Select @VNIM_MVTO_PATR = @VNIM_MVTO_PATR + @CNIM_MVTO_SALD                              
   End                              
                              
  Fetch CU_TASALD_EMPR_Q31_1 into @CSCO_CNTA_QUIE, @CSCO_CNTA_EMPR,                               
       @CSDE_CNTA_EMPR, @CSNU_DOCU_SUNA,@CSNO_AUXI,@CSTI_DOCU,@CSNU_DOCU,@CSTI_DOID_SUNA,              
       @CSNU_RUCS,@CDFE_ASTO_CNTB,@CNIM_MVTO_SALD, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR  
 End                              
                              
Close CU_TASALD_EMPR_Q31_1                              
Deallocate CU_TASALD_EMPR_Q31_1                             
                    
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES DEUDOR (> 0) ENTONCES SE SUMA AL ACTIVO                    
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES ACREEDOR (< 0) ENTONCES SE SUMA AL PASIVO                    
                     
 If @VNIM_CNTA_ORDE > 0                     
    Begin                     
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @VNIM_CNTA_ORDE                    
    End                     
 If @VNIM_CNTA_ORDE < 0                     
    Begin                     
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @VNIM_CNTA_ORDE                    
    End                      
                              
-- Select Final del Reporte         
If @ISTI_REPO = 'R'        
begin                                                    
 Select t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.DE_QUIE_0002, t1.CO_CNTA_QUIE, t2.DE_CNTA_EMPR,                               
        t1.CO_CNTA_EMPR, t1.DE_CNTA_EMPR, t1.NU_DOCU_SUNA, t1.ti_auxi_empr, t1.co_auxi_empr, t1.NO_AUXI,t1.TI_DOCU,t1.NU_DOCU,t1.TI_DOID_SUNA,              
        t1.NU_RUCS, convert (varchar(10),t1.FE_ASTO_CNTB,103),              
        t1.IM_MVTO_TOTA, PAS_PATR = @VNIM_MVTO_PASI + @VNIM_MVTO_PATR,                              
        ACTIVO = @VNIM_MVTO_ACTI, PASIVO = @VNIM_MVTO_PASI, PATRIMONIO = @VNIM_MVTO_PATR                              
 From #TWSALD_EMPR_Q26_1 t1  
 Left Outer Join TMPLAN_EMPR t2  
 On t2.CO_EMPR = @ISCO_EMPR  
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_QUIE  
 Order by t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_EMPR, t1.TI_DOID_SUNA, t1.NU_DOCU_SUNA
end        
else         
begin         
 Select t1.DE_QUIE_0002 as TITULO, t1.CO_CNTA_QUIE AS CUENTA_2_DIGITOS, t2.DE_CNTA_EMPR AS DESC_CUENTA_2_DIGITOS,                               
        t1.CO_CNTA_EMPR AS CUENTA, t1.DE_CNTA_EMPR AS DESC_CUENTA,t1.TI_DOID_SUNA AS TIP_DOCU_SUNA,t1.NU_DOCU_SUNA AS NUM_DOCU_SUNA,  
  t1.ti_auxi_empr, t1.co_auxi_empr, t1.NO_AUXI AS NOMBRE_AUXILIAR,        
        t1.TI_DOCU AS TIPO_DOCUMENTO,t1.NU_DOCU AS NUM_DOCUMENTO,              
        t1.NU_RUCS AS RUCS, convert (varchar(10),t1.FE_ASTO_CNTB,103) AS FECHA_PRESTAMO,              
        t1.IM_MVTO_TOTA AS SALDO, PAS_PATR = @VNIM_MVTO_PASI + @VNIM_MVTO_PATR,                              
        ACTIVO = @VNIM_MVTO_ACTI, PASIVO = @VNIM_MVTO_PASI, PATRIMONIO = @VNIM_MVTO_PATR                              
 From #TWSALD_EMPR_Q26_1 t1  
 Left Outer Join TMPLAN_EMPR t2  
 On t2.CO_EMPR = @ISCO_EMPR  
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_QUIE  
 Order by t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_EMPR, t1.TI_DOID_SUNA, t1.NU_DOCU_SUNA  
END                         
Return                              
/*----------------------------- Fin ---------------------------------*/     
  





GO
